﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ConsoleApplicationTestServicioExternos.ServiceReferenceParaExternos;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;
using System.Configuration;

namespace ConsoleApplicationTestServicioExternos
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {

                Console.WriteLine("Iniciando Aplicacion");
                //CargarUnContacto();
                //CargarUnContactoLucas();
                CargarUnContactoLucasExtendido();

                Console.WriteLine("Fin mensajes");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.WriteLine("Presione una tecla para continuar");
            Console.ReadKey();
        }

        private static void CargarUnContactoLucasExtendido()
        {
            ServicePointManager.ServerCertificateValidationCallback += customXertificateValidation;

            CrmExternoClient svc = new CrmExternoClient();

            List<string> mensajes = new List<string>();
            bool guardoOk;
            int idResult;           

            Console.WriteLine("Guardando Contacto...");
            idResult = svc.GuardarContactoExtendido(out guardoOk, out mensajes, 0, "amartinez", "p@ssw0rd!123", 1, "Dni", null, "prueba@gmail.com", "Pepe", string.Empty, null, null, null, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, null, false, null, null, null);

            Console.WriteLine(String.Format("El id es {0} y el contacto se guardó ok?: {1}", idResult, guardoOk.ToString()));

            Console.WriteLine("Los mensajes son:");
            if (mensajes != null)
            {
                foreach (var mensaje in mensajes)
                {
                    Console.WriteLine(mensaje);
                }
            }
        }

        private static void CargarUnContactoLucas()
        {
            ServicePointManager.ServerCertificateValidationCallback += customXertificateValidation;

            CrmExternoClient svc = new CrmExternoClient();

            ContactoE contacto = new ContactoE();
            contacto.Categorias = new List<string>();

            contacto.EmpresaId = 1;
            contacto.UserName = "lucasfuentes";
            contacto.Password = "123";
            contacto.Apellido = "test";
            contacto.Nombre = "test";
            contacto.Email = "test@tyest.com";
            contacto.NroDocumento = 123456789M;
            contacto.CumpleDia = 01;
            contacto.CumpleMes = 01;
            contacto.CumpleAnio = 1987;
            contacto.TipoDocumento = "DNI";

            Console.WriteLine("Guardando Contacto...");
            contacto = svc.GuardarContacto(contacto);

            Console.WriteLine(String.Format("El id es {0} y el contacto se guardó ok?: {1}", contacto.Id, contacto.GuardadoOk.ToString()));
            Console.WriteLine("Los mensajes son:");
            foreach (var mensaje in contacto.Mensajes)
            {
                Console.WriteLine(mensaje);
            }
        }

        private static void CargarUnContacto()
        {
            ServicePointManager.ServerCertificateValidationCallback += customXertificateValidation;

            CrmExternoClient svc = new CrmExternoClient();

            ContactoE contacto = new ContactoE();
            contacto.Categorias = new List<string>();

            contacto.EmpresaId = 3;
            contacto.UserName = ConfigurationManager.AppSettings["userName"];
            contacto.Password = ConfigurationManager.AppSettings["password"];
            contacto.Apellido = "Rodriguez";
            contacto.Nombre = "Juan";
            contacto.Email = "test@test.com";
            contacto.NroDocumento = 878788M;

            Console.WriteLine("Guardando Contacto...");
            contacto = svc.GuardarContacto(contacto);

            Console.WriteLine(String.Format("El id es {0} y el contacto se guardó ok?: {1}", contacto.Id, contacto.GuardadoOk.ToString()));
            Console.WriteLine("Los mensajes son:");
            foreach (var mensaje in contacto.Mensajes)
            {
                Console.WriteLine(mensaje);
            }
        }

        private static bool customXertificateValidation(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error)
        {
            //var certificate = (X509Certificate2)cert;

            // Inspect the server certficiate here to validate 
            // that you are dealing with the correct server.
            // If so return true, if not return false.
            return true;
        }
    }
}
